package models

import (
	"driver_srv/basic/config"
	"gorm.io/gorm"
	"time"
)

// 网约车表
type RideHailing struct {
	Id                         int32          `gorm:"column:id;type:int;comment:记录唯一标识;primaryKey;not null;" json:"id"`
	DriverId                   int32          `gorm:"column:driver_id;type:int;comment:司机ID;not null;" json:"driver_id"`                                                          // 车辆ID
	CompanyIdentifier          string         `gorm:"column:company_identifier;type:varchar(100);comment:公司标识;default:NULL;" json:"company_identifier"`                           // 公司标识
	VehicleBrand               string         `gorm:"column:vehicle_brand;type:varchar(50);comment:车辆厂牌;default:NULL;" json:"vehicle_brand"`                                      // 车辆厂牌
	VehicleType                string         `gorm:"column:vehicle_type;type:varchar(50);comment:车辆类型;default:NULL;" json:"vehicle_type"`                                        // 车辆类型
	VehicleOwner               string         `gorm:"column:vehicle_owner;type:varchar(100);comment:车辆所有人;default:NULL;" json:"vehicle_owner"`                                    // 车辆所有人
	EngineOrMotorNumber        string         `gorm:"column:engine_or_motor_number;type:varchar(50);comment:发动机号/电动机号;default:NULL;" json:"engine_or_motor_number"`               // 发动机号/电动机号
	RegistrationDate           time.Time      `gorm:"column:registration_date;type:date;comment:车辆注册日期;default:NULL;" json:"registration_date"`                                   // 车辆注册日期
	FuelType                   string         `gorm:"column:fuel_type;type:varchar(30);comment:车辆燃料类型;default:NULL;" json:"fuel_type"`                                            // 车辆燃料类型
	EngineDisplacement         float64        `gorm:"column:engine_displacement;type:decimal(10, 2);comment:发动机排量;default:NULL;" json:"engine_displacement"`                      // 发动机排量
	VehiclePhotoFileNumber     string         `gorm:"column:vehicle_photo_file_number;type:varchar(100);comment:车辆照片文件编号;default:NULL;" json:"vehicle_photo_file_number"`         // 车辆照片文件编号
	TransportationPermitNumber string         `gorm:"column:transportation_permit_number;type:varchar(50);comment:运输证字号;default:NULL;" json:"transportation_permit_number"`       // 运输证字号
	PermitIssuingAuthority     string         `gorm:"column:permit_issuing_authority;type:varchar(100);comment:车辆运输证发证机构;default:NULL;" json:"permit_issuing_authority"`          // 车辆运输证发证机构
	OperationArea              string         `gorm:"column:operation_area;type:varchar(100);comment:车辆经营区域;default:NULL;" json:"operation_area"`                                 // 车辆经营区域
	PermitValidFrom            time.Time      `gorm:"column:permit_valid_from;type:date;comment:车辆运输证有效期起;default:NULL;" json:"permit_valid_from"`                                // 车辆运输证有效期起
	PermitValidTo              time.Time      `gorm:"column:permit_valid_to;type:date;comment:车辆运输证有效期止;default:NULL;" json:"permit_valid_to"`                                    // 车辆运输证有效期止
	FirstRegistrationDate      time.Time      `gorm:"column:first_registration_date;type:date;comment:车辆初次登记日期;default:NULL;" json:"first_registration_date"`                     // 车辆初次登记日期
	MaintenanceStatus          string         `gorm:"column:maintenance_status;type:varchar(50);comment:车辆检修状态;default:NULL;" json:"maintenance_status"`                          // 车辆检修状态
	NextInspectionDate         time.Time      `gorm:"column:next_inspection_date;type:date;comment:车辆下次年检时间;default:NULL;" json:"next_inspection_date"`                           // 车辆下次年检时间
	AnnualInspectionStatus     string         `gorm:"column:annual_inspection_status;type:varchar(50);comment:车辆年度审核状态;default:NULL;" json:"annual_inspection_status"`            // 车辆年度审核状态
	InvoicePrinterSerialNumber string         `gorm:"column:invoice_printer_serial_number;type:varchar(50);comment:发票打印设备序列号;default:NULL;" json:"invoice_printer_serial_number"` // 发票打印设备序列号
	GpsBrand                   string         `gorm:"column:gps_brand;type:varchar(50);comment:卫星定位装置品牌;default:NULL;" json:"gps_brand"`                                          // 卫星定位装置品牌
	GpsModel                   string         `gorm:"column:gps_model;type:varchar(50);comment:卫星定位装置型号;default:NULL;" json:"gps_model"`                                          // 卫星定位装置型号
	GpsImei                    string         `gorm:"column:gps_imei;type:varchar(50);comment:卫星定位装置IMEI号;default:NULL;" json:"gps_imei"`                                         // 卫星定位装置IMEI号
	GpsInstallationDate        time.Time      `gorm:"column:gps_installation_date;type:date;comment:卫星定位设备安装日期;default:NULL;" json:"gps_installation_date"`                       // 卫星定位设备安装日期
	DevicePurchaseDate         time.Time      `gorm:"column:device_purchase_date;type:date;comment:设备购日期;default:NULL;" json:"device_purchase_date"`                              // 设备购日期
	ServiceType                string         `gorm:"column:service_type;type:varchar(50);comment:服务类型;default:NULL;" json:"service_type"`                                        // 服务类型
	FreightTypeCode            string         `gorm:"column:freight_type_code;type:varchar(50);comment:运价类型编码;default:NULL;" json:"freight_type_code"`                            // 运价类型编码 // 车辆ID
	CreatedAt                  time.Time      `gorm:"column:created_at;type:datetime;comment:记录创建时间;not null;default:CURRENT_TIMESTAMP;" json:"created_at"`                       // 记录创建时间
	UpdatedAt                  time.Time      `gorm:"column:updated_at;type:datetime;comment:记录更新时间;not null;default:CURRENT_TIMESTAMP;" json:"updated_at"`                       // 记录更新时间
	DeletedAt                  gorm.DeletedAt `gorm:"column:deleted_at;type:datetime;comment:记录删除时间;default:NULL;" json:"deleted_at"`                                             // 记录删除时间
}

func (r *RideHailing) TableName() string {
	return "ride_hailing"
}

// 添加车辆扩展信
func (r *RideHailing) CreateRideHailing() error {
	return config.DB.Create(&r).Error
}
